package com.test.cn.location

object Question_3 {
  def main(args: Array[String]): Unit = {
//    字段：用户ID，位置ID，开始时间，停留时长（分钟）
    val tuples: Seq[(String, String, Int, Int)] = List(
      ("UserA", "LocationA", 8, 60),
      ("UserA", "LocationA", 9, 60),
      ("UserB", "LocationB", 10, 60),
      ("UserB", "LocationB", 11, 80))

    //  1、对同一个用户，在同一个位置，连续的多条记录进行合并
    //  2、合并原则：开始时间取最早时间，停留时长累计求和

    //按照 用户 位置分组
    val stringToTuples = tuples.groupBy(item=>item._1+item._2)

    //拿到最早时间  累加
    val reduce = stringToTuples.map(item => item._2.reduce((v1, v2) => {
      var min = v1._3.min(v2._3)
      var total = v1._4 + v2._4
      Tuple4.apply(v1._1, v1._2, min, total)
    }))

    //输出结果
    reduce.foreach(println)


  }
}
